package com.example.guava;

import com.google.common.base.Preconditions;

/**
 * 3.Preconditions前置条件检查工具,优雅参数校验
 */
public class PreconditionsDemo {
    public static void main(String[] args) {
        // 检查参数是否符合预期，并抛出IllegalArgumentException异常，可以包含错误信息模板和占位符
        String str1 = "abc";
        Preconditions.checkArgument(str1.length() < 3, "字符串长度必须小于3");

        // 检查参数是否为null，并抛出NullPointerException异常，可以包含错误信息模板和占位符
        String str2 = null;
        Preconditions.checkNotNull(str2, "字符串不能为空");

        // 检查对象状态是否符合预期，并抛出IllegalStateException异常，可以包含错误信息模板和占位符
        boolean flag1 = false;
        Preconditions.checkState(flag1, "状态不正确");

        // 可以在错误信息中使用占位符
        int value1 = 101;
        Preconditions.checkArgument(value1 <= 100, "值必须小于等于 %s", 100);
    }
}
